Advanced Transformations (map, flatMap, reduceByKey) গাইড ও নোট

Big Data and Analytics - স্পার্ক এসকিউএল (Spark SQL) - DataFrames এর জন্য Advanced Transformations
206

Spark SQL-এ Advanced Transformations যেমন map, flatMap, এবং reduceByKey খুবই গুরুত্বপূর্ণ এবং কার্যকরী অপারেশন, যা RDD (Resilient Distributed Dataset) বা DataFrame/Dataset-এ ডেটা প্রসেসিং করার সময় ব্যবহৃত হয়। এই অপারেশনগুলি সাধারণত ডেটার উপর জটিল ট্রান্সফর্মেশন করতে সাহায্য করে এবং Spark-এর ইন-মেমরি কম্পিউটিং সুবিধাকে পুরোপুরি ব্যবহার করতে সক্ষম। চলুন, এই Advanced Transformations-এর প্রতিটি সম্পর্কে বিস্তারিত জানি।


১. map Transformation

map Transformation হল এমন একটি অপারেশন, যা RDD বা DataFrame/Dataset এর প্রতিটি উপাদানের উপর একটি নির্দিষ্ট ফাংশন প্রয়োগ করে একটি নতুন RDD বা DataFrame তৈরি করে। map সাধারণত প্রত্যেকটি ইনপুট ভ্যালুর উপর একটি একক আউটপুট ভ্যালু তৈরি করে।

উদাহরণ:

# SparkSession তৈরি
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName("map Transformation Example").getOrCreate()

# DataFrame তৈরি
data = [("Alice", 28), ("Bob", 25), ("Charlie", 30)]
columns = ["name", "age"]
df = spark.createDataFrame(data, columns)

# map Transformation ব্যবহার: age এর উপর 2 যোগ করা
df_transformed = df.rdd.map(lambda x: (x[0], x[1] + 2))
df_transformed.collect()

আউটপুট:

[('Alice', 30), ('Bob', 27), ('Charlie', 32)]

এখানে, map Transformation ব্যবহার করে age-এর ওপর ২ যোগ করা হয়েছে এবং একটি নতুন RDD তৈরি করা হয়েছে।


২. flatMap Transformation

flatMap Transformation হল এমন একটি অপারেশন, যা RDD বা DataFrame/Dataset এর প্রতিটি উপাদানের উপর একটি ফাংশন প্রয়োগ করে একাধিক আউটপুট তৈরি করতে পারে। map এর মতো একটি একক আউটপুট ভ্যালু তৈরি না করে, flatMap একটি ভেক্টর বা তালিকা (list) তৈরি করে। এই কারণে, flatMap বিভিন্ন আউটপুট তৈরি করতে সক্ষম।

উদাহরণ:

# DataFrame তৈরি
data = [("Alice", "HR"), ("Bob", "Finance"), ("Charlie", "IT")]
columns = ["name", "department"]
df = spark.createDataFrame(data, columns)

# flatMap Transformation ব্যবহার: নামের প্রত্যেক অক্ষরের ওপর কাজ করা
flat_map_result = df.rdd.flatMap(lambda x: x[0])  # নামের প্রতিটি অক্ষর আলাদা আলাদা করে দিবে
flat_map_result.collect()

আউটপুট:

['A', 'l', 'i', 'c', 'e', 'B', 'o', 'b', 'C', 'h', 'a', 'r', 'l', 'i', 'e']

এখানে, flatMap Transformation ব্যবহার করে, name কলামের প্রত্যেকটি অক্ষর আলাদা আলাদা করে বের করা হয়েছে।


৩. reduceByKey Transformation

reduceByKey Transformation হল একটি বিশেষ ধরনের অপারেশন, যা কিপর্যন্ত একক কিপেয়ার ভ্যালুদের উপর একটি রিডাকশন অপারেশন চালায়। এটি সাধারণত ব্যবহৃত হয় যখন আপনি একটি কিপেয়ার ডেটা (যেমন key-value পেয়ার) উপর কোনো অ্যাগ্রিগেশন করতে চান, যেমন যোগফল বা গুনফল বের করা। reduceByKey মূলত key-র উপর একত্রিত (combine) করে ভ্যালুগুলিকে রিডিউস করে।

উদাহরণ:

# Key-Value পেয়ার হিসেবে DataFrame তৈরি
data = [("Alice", 3), ("Bob", 2), ("Alice", 4), ("Bob", 5)]
columns = ["name", "score"]
rdd = spark.sparkContext.parallelize(data)

# reduceByKey ব্যবহার: নামের প্রতি স্কোর যোগ করা
reduced_result = rdd.reduceByKey(lambda a, b: a + b)
reduced_result.collect()

আউটপুট:

[('Alice', 7), ('Bob', 7)]

এখানে, reduceByKey Transformation ব্যবহার করে প্রতিটি নামের স্কোর যোগ করা হয়েছে। Alice এবং Bob এর স্কোর একত্রিত করা হয়েছে এবং তাদের মোট স্কোর বের করা হয়েছে।


Spark SQL-এ Advanced Transformations এর প্রয়োগ

Spark SQL-এ এই Advanced Transformations-গুলি RDD এবং DataFrame/Dataset উভয়ের জন্য ব্যবহৃত হতে পারে। DataFrame বা Dataset-এ RDD API ব্যবহার করার মাধ্যমে map, flatMap, এবং reduceByKey রূপান্তরের কার্যক্ষমতা বাড়ানো যেতে পারে।

উদাহরণ (DataFrame এ map এবং flatMap ব্যবহার):

# DataFrame তৈরি
data = [("Alice", 28), ("Bob", 25), ("Charlie", 30)]
columns = ["name", "age"]
df = spark.createDataFrame(data, columns)

# map Transformation ব্যবহার: age এর ওপর 2 যোগ করা
df_transformed = df.rdd.map(lambda x: (x[0], x[1] + 2))

# flatMap Transformation ব্যবহার: নামের প্রতি অক্ষরের জন্য flatMap
flat_map_result = df.rdd.flatMap(lambda x: x[0])
flat_map_result.collect()

উদাহরণ (DataFrame এ reduceByKey ব্যবহার):

# Key-Value DataFrame তৈরি
data = [("Alice", 3), ("Bob", 2), ("Alice", 4), ("Bob", 5)]
columns = ["name", "score"]
df = spark.createDataFrame(data, columns)

# RDD এ রূপান্তর এবং reduceByKey প্রয়োগ
rdd = df.rdd
reduced_result = rdd.map(lambda x: (x[0], x[1])).reduceByKey(lambda a, b: a + b)
reduced_result.collect()

সারাংশ

Spark SQL-এ Advanced Transformations যেমন map, flatMap, এবং reduceByKey ডেটা প্রসেসিংয়ের অত্যন্ত শক্তিশালী টুলস। map Transformation প্রতিটি উপাদানকে নতুন ভ্যালুতে রূপান্তরিত করে, flatMap একাধিক আউটপুট তৈরি করতে পারে, এবং reduceByKey একটি key-value পেয়ার নিয়ে একত্রিত এবং রিডিউস অপারেশন করতে সাহায্য করে। এই ট্রান্সফর্মেশনগুলির মাধ্যমে Spark SQL ডেটার উপর জটিল অ্যাগ্রিগেশন, ট্রান্সফরমেশন এবং ম্যানিপুলেশন করতে সক্ষম হয়, যা ডিস্ট্রিবিউটেড কম্পিউটিংয়ের জন্য অত্যন্ত কার্যকরী।

Content added By
Promotion

Are you sure to start over?

Loading...